LLM 中的 Causal Decoder、Prefix Decoder 和 Encoder-Decoder
Mask 机制
在 Transformer 模型中,mask 机制是一种用于在 self-attention 中的技术,用以控制不同 token 之间的注意力交互。 Mask 机制经常被用于NLP任务中,按照作用总体来说可以分成两类
Padding mask(填充掩码)
- 作用:用于处理非定长序列
- 实现:在自注意力机制中,句子中的每个单词都会参与计算。然而,实际句子中常常需要填充符 (例如-1) 来补足长度不足的情况。填充掩码的作用就是将这些填充符所在的位置标记为 0,以便在计算过程中忽略这些位置的单词。
Sequence mask(序列掩码)
- 作用:保证在生成序列时不会将未来的信息泄露给当前位置的单词
- 实现:sequence mask有各种各样的形式和设计,其主要目的是在进行词预测时,防止模型在不该看到未来词汇的情况下“偷看”到后续的内容。比如,当我们使用自注意力机制 (self-attention) 或其他依赖上下文信息的机制时,模型可能会接触到它不应该知道的未来信息,从而影响预测的准确性。为了避免这种情况,我们使用 mask 来“遮挡”这些不该被看到的部分,确保模型只能基于当前和过去的信息进行预测。
不同的 Decoder
当下 LLM 的大都是以 Decoder-only 架构的研究居多,细说起原因可移步至LLM 中的 Decoder Only。不同的 decoder 架构其实是在比较不同的 sequence mask,下面将细说三种主流的 decoder 架构
Causal Decoder

- causal decoder: 因果解码器,目前流行的大多数模型都是这种结构(GPT、LLaMa),因果解码器架构采用单向注意力掩码,以确保每个输入标记只能关注过去的标记和它本身。输入和输出标记通过解码器以相同的方式进行处理
Prefix Decoder

- prefix decoder: 前缀解码器,前缀解码器结构修正了因果编码器的掩码机制,即 Prefix LM是输入部分采用双向注意力,而输出部分采用单向注意力。这样,与 encoder-decoder 类似,可以双向编码前缀序列并自回归低逐个预测输出标记,和 encoder-decoder 不同的是,处理输入和输出的模型参数是完全共享的。现在前缀编码器的代表大模型是 GLM
Encoder-Decoder

- encoder-decoder: 编码器-解码器, Transformer 最初提出时采用了 encoder-decoder 架构,模型由两个独立的部分组成:encoder 和 decoder。encoder 负责将输入序列转换为一种中间表示,而 decoder 则基于这种中间表示以自回归的方式生成目标序列。在 encoder 部分,使用的是双向注意力机制,这意味着输入提示中的每个 token 都可以相互“看到”,而在 decoder 部分,仍然使用单向注意力机制,这确保了在生成过程中,前面的 token 无法看到后面的 token,和 prefix decoder 不同的是两个模型的是完全独立的,并不会共享参数。现在编码器-编码器的代表大模型有 T5
参考文献
- [1] LLM主流框架:Causal Decoder、Prefix Decoder和Encoder-Decoder
- [2] Transformer相关——(7)Mask机制
- [3] 比较Causal decoder、Prefix decoder和encoder-decoder